home *** CD-ROM | disk | FTP | other *** search
- {
- SEAN PALMER
-
- > I don't know if you'd be interested, but here's my version of a
- > direct-video writer: QWRITE.
-
- I've optimized it a little, if you're interested... 8)
-
- This is WITHOUT using inline ASM... I have routines that would put this
- optimized version to shame, in assembler....
-
- This runs 2290 times in the time it took yours to run 1754 times in a
- test I ran.
-
- I suggest removing the f and b parameters, and using the crt.textAttr
- variable so the user can set textcolor() and textbackground() before
- calling the routine and it'll come out ok, since you depend on crt
- anyway for the lastmode var... actually why not use wherex() and
- wherey() instead of passing THOSE as parameters too... hmm...
- }
-
- procedure qwrite(x, y : byte; s : string; f, b : byte);
-
- { Does a direct video write -- extremely fast. <----hehehe
- X, Y = screen location of first byte;
- S = string to display;
- F = foreground color;
- B = background color. }
-
- var
- cnter : word;
- vidPtr : ^word;
- attrib : word;
-
- begin
- attrib := swap((b shl 4) + f);
- vidptr := ptr($B800, 2 * (80 * pred(y) + pred(x)));
- if lastmode = 7 then
- dec(longint(vidptr), $08000000);
- for cnter := 1 to length(s) do
- begin
- vidptr^ := attrib or byte (s[cnter]);
- inc(vidptr);
- end;
- end;